﻿using System;
using System.Workflow.Activities;
using PD.WorkflowLibrary.ExternalData;

namespace PD.WorkflowLibrary
{
    /// <summary>
    /// A local service interface.
    /// </summary>
    [ExternalDataExchange]
    public interface IInvoiceProcessingService
    {
        /// <summary>
        /// Occurs when the invoice has been corrected.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceCorrected;

        /// <summary>
        /// Occurs when the invoice has been confirmed.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceConfirmed;

        /// <summary>
        /// Occurs when the invoice has been approved by chief accountant.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceApprovedByChiefAccountant;

        /// <summary>
        /// Occurs when the invoice has been approved by CEO.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceApprovedByCEO;

        /// <summary>
        /// Occurs when the invoice has been finally approved.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceFinallyApproved;

        /// <summary>
        /// Occurs when the invoice has been archived.
        /// </summary>
        event EventHandler<TaskUpdatedEventArgs> InvoiceArchived;
    }
}
